package 两个数组的交集;

import java.util.Collections;
import java.util.HashSet;
import java.util.Set;
import java.util.function.Function;
import java.util.function.ToIntFunction;
import java.util.stream.Collectors;

public class Solution {
    public int[] intersection(int[] nums1, int[] nums2) {
        // 给定两个数组 nums1 和 nums2 ，返回 它们的交集。输出结果中的每个元素一定是 唯一 的。我们可以 不考虑输出结果的顺序
        // 使用哈希表，利用set的特性将nums1数组存入集合中，然后通过遍历nums2数组
        // 然后查看set中是否存在该元素，如果存在则将该元素加入到集合中
        Set<Integer> set = new HashSet<>();
        // 利用set的特性将nums1数组存入集合中
        for (int i : nums1) {
            set.add(i);
        }
        // 然后通过遍历nums2数组,查看set中是否存在该元素，如果存在则将该元素加入到集合中
        HashSet<Integer> resultSet = new HashSet<>();
        for (int i : nums2) {
            if (set.contains(i)) {
                resultSet.add(i);
            }
        }
        return resultSet.stream().mapToInt(i->i).toArray();
    }
}
